home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / telecomm / fnordadl / fn132src.zoo / citutil / conv33d.c < prev    next >
C/C++ Source or Header  |  1991-09-02  |  21KB  |  617 lines

  1. /*
  2.  * conv33d.c -- convert STadel 3.3d system to Fnordadel 1.3
  3.  *
  4.  * 90Dec28 AA    Hacked on again
  5.  * 90Sep05 AA    Created.
  6.  */
  7.  
  8. #include "ctdl.h"    /* for Fnordadel definitions */
  9. #include "net.h"
  10. #include "log.h"
  11. #include "msg.h"
  12. #include "room.h"
  13. #include "config.h"
  14. #include "floor.h"
  15. #include "citlib.h"
  16.  
  17. /* STadel 3.3d definitions */
  18. /* (or reasonable approximations thereof) */
  19.  
  20. #define    xORGSIZE    80
  21.  
  22. #define xMSGSPERRM    58
  23. #define xMAXROOMS    64
  24. #define xSHARED_ROOMS    16
  25.  
  26. #define xMAXCODE    400    /* codebuffer inside cfg        */
  27. #define xNUMBAUDS    5
  28.  
  29. /* This is from 3.4a -- is it the same as 3.3d?  It's the same size...    */
  30.  
  31. struct xconfig {
  32.     short  maxMSector;        /* Max # of sectors (simulated)     */
  33.     short  catChar;        /* Location of next write in msg file    */
  34.     short  catSector;
  35.  
  36.     long oldest;        /* 32-bit ID# of first message in system*/
  37.     long newest;        /* 32-bit ID# of last  message in system*/
  38.  
  39.     short  dft_page;        /* default pagelength            */
  40.     short  dft_profile;        /* default profile            */
  41.  
  42.     short  cryptSeed;        /* xor crypt offset            */
  43.     short  sizeLTentry;        /* contains size of a logTab entry    */
  44.     short  MAXLOGTAB;        /* number of log entries supported    */
  45.  
  46.     /*
  47.      * system identification for users & networking.
  48.      */
  49.     short  nodeName;        /* name for networking            */
  50.     short  nodeTitle;        /* name displayed for callers        */
  51.     short  nodeId;        /* phone number/network id        */
  52.     /*
  53.      * system directory offsets in codeBuf
  54.      */
  55.     short  sysdir;        /* where we keep various system files    */
  56.     short  helpdir;        /* .hlp, .mnu, .blb files        */
  57.     short  msgdir;        /* primary messagefile            */
  58.     char mirror;        /* Auto backup of message files?    */
  59.     short  mirrordir;        /* directory to put autobackup msgfile    */
  60.     short  netdir;        /* where net files are found        */
  61.     short  auditdir;        /* where audit files are found        */
  62.     short  receiptdir;        /* where sendfile stuff goes        */
  63.     short  holddir;        /* where held messages go        */
  64.     short  tempdir;        /* temporaries (defaults to netdir)    */
  65.  
  66.     short  recSize;        /* how many K we can recieve.        */
  67.  
  68.     char unlogEnterOk;        /* TRUE if OK to enter messages anon    */
  69.     char unlogReadOk;        /* TRUE if unlogged folks can read mess */
  70.     char unlogLoginOk;        /* TRUE if spontan. new accounts ok.    */
  71.     char nonAideRoomOk;     /* TRUE general folks can make rooms    */
  72.     char noMail;        /* TRUE if mail is not allowed        */
  73.     char allNet;        /* TRUE if all users get net privvies    */
  74.     char paranoid;        /* force remote callers to login    */
  75.     char aideforget;        /* aides can forget rooms        */
  76.     char keephold;        /* keep held messages between logins    */
  77.     char usa;            /* is this system in north america?    */
  78.     char call_log;        /* if > 0, keep a call-log.        */
  79.     char pathalias;        /* do intelligent mail routing        */
  80.     char forward_mail;        /* forward mail through this node?    */
  81.     char noChat;        /* TRUE to suppress chat attempts    */
  82.     char debug;         /* turns debug printout on and off    */
  83.     char diskusage;        /* do a df() after each directory    */
  84.     char fZap;            /* default flags for +zap,        */
  85.     char fNetlog;        /*              +netlog,        */
  86.     char fNetdeb;        /*              +netdebug        */
  87.  
  88.     short  evtCount;        /* number of events to deal with...    */
  89.     short  floorCount;        /* number of floors to deal with...    */
  90.     short  zap_count;        /* loop zap table size            */
  91.     short  netSize;        /* How many on the net?         */
  92.     short  poll_count;        /* # polling events            */
  93.  
  94.     short  com_port;        /* com port that the modem is on...    */
  95.                 /* (only useful for MS-DOS version)    */
  96.     long poll_delay;        /* idle time before polling systems    */
  97.  
  98.     char sysPassword[60];    /* Remote sysop             */
  99.     char filter[128];        /* input character translation table    */
  100.     char codeBuf[xMAXCODE];    /* strings buffer            */
  101.     char shave[8];        /* shave-and-a-haircut/2 bits pauses    */
  102.  
  103.     char sysBaud;        /* What's our baud rate going to be?    */
  104.     char search_baud;        /* TRUE to do flip flop search for baud */
  105.     char connectPrompt;        /* prompt for C/R when connected    */
  106.     short  connectDelay;    /* how long to wait after connect before*/
  107.                 /* autobauding                */
  108.     short  modemSetup;        /* string to set up the modem        */
  109.     short  mCCs[xNUMBAUDS];    /* strings for getting condition codes    */
  110.                 /* from the modem            */
  111.     char modemCC;        /* does the modem do condition codes?    */
  112.     char probug;        /* prometheus 2400 baud modem bug...    */
  113.     short  dialPrefix;        /* string to prefix telephone #'s with    */
  114.     short  dialSuffix;        /* string to append to telephone #'s    */
  115.     short  local_time;        /* how long to wait 'til local hangup    */
  116.     short  ld_time;        /* how long to wait 'til l-d hangup    */
  117.  
  118.     short  shell;        /* shell to execute if you do an ^LO    */
  119.     short  sysopName;        /* user to throw SYSOP mail at.        */
  120.     short  archiveMail;        /* archive all this users' mail        */
  121.     short  hub;            /* for forwarding mail.            */
  122.     short  organization;    /* descriptive field for headers    */
  123.     short  dft_width;        /* default terminal width        */
  124.     /*
  125.      * accounting variables
  126.      */
  127.     long download;        /* download limit...            */
  128.     char ld_cost;        /* cost to mail to a l-d system        */
  129.     char hubcost;        /* cost to route mail through #hub    */
  130. } ;
  131.  
  132. #define BitField(name,size)    char name
  133.  
  134. struct xrflags {         /* Room flags                */
  135.     BitField(xINUSE,1);        /* Room in use?             */
  136.     BitField(xPUBLIC,1);    /* Room public?             */
  137.     BitField(xISDIR,1);        /* Room directory?            */
  138.     BitField(xPERMROOM,1);    /* Room permanent?            */
  139.     BitField(xSKIP,1);        /* Room skipped? (temporary for user)    */
  140.     BitField(xUPLOAD,1);    /* Can room be uploaded to?        */
  141.     BitField(xDOWNLOAD,1);    /* Can room be downloaded from?     */
  142.     BitField(xSHARED,1);    /* Is this a shared room?        */
  143.     BitField(xARCHIVE,1);    /* Is this room archived somewhere?    */
  144.     BitField(xANON,1);        /* is this an anonymous room?        */
  145.     BitField(xINVITE,1);    /* is this an invitation-only room?    */
  146.     BitField(xNETDOWNLOAD,1);    /* net-downloadable room?        */
  147.     BitField(xAUTONET,1);    /* (shared room -- net all messages?)    */
  148.     BitField(xREADONLY,1);    /* readonly room?            */
  149.  
  150.     char xfloorGen;        /* floor this room is in        */
  151. } ;
  152.  
  153. struct xaRoom {            /* The appearance of a room:        */
  154.     unsigned short xrbgen;        /* generation # of room         */
  155.     struct xrflags xrbflags;    /* same bits as flags above        */
  156.     LABEL    xrbname;    /* name of room             */
  157.     long    xrblastNet;
  158.     long    xrblastLocal;
  159.     long    xrblastMessage;
  160.     char    xrbfill[8];
  161.     char    xrbdirname[100];/* user directory for this room's files */
  162.     struct xaRmsg {
  163.     long xrbmsgNo;        /* every message gets unique#        */
  164.     short xrbmsgLoc;    /* sector message starts in        */
  165.     } xmsg[xMSGSPERRM];
  166. } ;
  167.  
  168. struct xflTab {
  169.     LABEL xflName;        /* floor name                */
  170.     char xflGen;        /* floor generation #            */
  171.     char xflInUse;        /* is this floor in use?        */
  172.     char xflexp0;        /* 4 expansion fields            */
  173.     char xflexp1;
  174.     char xflexp2;
  175.     char xflexp3;
  176. } ;
  177.  
  178. /* 3.4a struct: */
  179. #define    BIT(x)    (1<<(x))
  180.  
  181. struct xlflags {         /* Flags for person in log        */
  182.     char xPROTOCOL;        /* Default upload/download protocol    */
  183.     BitField(xLFMASK,1);    /* Linefeeds?                */
  184.     BitField(xEXPERT,1);    /* Expert?                */
  185.     BitField(xAIDE,1);        /* Vice-Grand-Poobah?            */
  186.     BitField(xL_INUSE,1);    /* Is this slot in use?         */
  187.  
  188.     char xREADING;        /* options for reading messages        */
  189. #define    dLONG    BIT(0)            /* multiline headers?        */
  190. #define    dTIME    BIT(1)            /* print time on short headers    */
  191. #define    dSUBJ    BIT(2)            /* print subject field        */
  192. #define    dMORE    BIT(3)            /* pause between messages    */
  193. #define    dORG    BIT(4)            /* print org fields        */
  194. #define    dOLDTOO    BIT(5)            /* print last old on new    */
  195. #define    dNUMBER    BIT(6)            /* show message numbers        */
  196. #define    dFLOOR    BIT(7)            /* floor-by-floor display    */
  197.  
  198.     char xPAGELENGTH;        /* for pagination            */
  199.     BitField(xNET_PRIVS,1);    /* do we have netprivs?            */
  200.     BitField(xASKSUBJECT,1);    /* ask for subject when entering mesg    */
  201. } ;
  202.  
  203. struct xlogBuffer {        /* The appearance of a user:        */
  204.     char  xlbnulls;        /* #nulls, lCase, lFeeds        */
  205.     struct xlflags xlbflags;    /* UCMASK, LFMASK, EXPERT, AIDE, INUSE    */
  206.     char  xlbwidth;        /* terminal width            */
  207.     short xcredit;        /* Credit for long distance calls    */
  208.     LABEL xlbname;        /* caller's name            */
  209.     LABEL xlbpw;